#pragma once

namespace ZeEngine
{
    class AnimatedComponent;
    class TransformComponent;
}

class GaulemSystem : public IComponentSystem
{
public:
    enum GaulemState
    {
        eStateUnknown = -1,
        eStateExplore,
    };

    GaulemSystem();
    ~GaulemSystem();

    virtual bool Init(ZeEngine::GameEngine& gameEngine) override;
    virtual bool Update(ZeEngine::GameEngine& gameEngine) override;

private:
    void UpdatePhysics();
    void UpdateState();

    //States
    void ChangeState(GaulemState eState);

    void ChangeToStateExplore();
    void DoStateExplore();

private:

    //The whole entity and all its components
    Entity* m_pGaulem;
    AnimatedComponent* m_pAnimatedComponent;
    TransformComponent* m_pTransformComponent;

    GaulemState m_gaulemState;
};

